package Day18.IO.OutputStream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName Demo02OutputStream
 * @date 2022年09月03日 13:47
 * @Description: 一次写入多个字节的方法
 *   - public void write(byte[ ] b):将 b.length字节从指定的字节数组写入此输出流。
 *   - public void write(byte[] b， int off，int len)︰从指定的字节数组写入len字节，从偏移量off开始输出到此输出流。
 */
public class Demo02OutputStream {
    public static void main(String[] args) throws IOException {
        //创建FileOutputStream对象，构造方法中绑定要写入数据的目的地
        FileOutputStream fos = new FileOutputStream("D:\\java黑马\\src\\Day18\\IO\\OutputStream\\b.txt");
        //调用FileOutputStream对象中的方法write，大数据写入到文件中
        //在文件中显示100，需要几个字节
        fos.write(49);
        fos.write(48);
        fos.write(48);

        /**
         * public void write(byte[ ] b):将 b.length字节从指定的字节数组写入此输出流。
         * 可以一次写多个字节：
         *      如果写的第一个字节是正数，（0-127），那么显示的时候会查询ASCII表
         *      如果写的第一个字节是负数，那么第一个字节会和第二个字节，两个字节组成一个中文显示，查询系统默认码表(GBK）
         *
         */
        byte [] bytes = {65,66,67,68,69};//ABCDE
        //byte [] bytes = {-65,-66,-67,68,69};//烤紻E
        fos.write(bytes);


        /**
         *- public void write(byte[] b， int off，int len)︰把字节数组的一部分写入到文件中
         *      int  off ：数组的开始索引
         *      int  len ：第几个字节
         *
         */
        fos.write(bytes,1,2);//BC

        /**
         * 写入字符的方法：可以使用String类中的方法把字符串，转换为字节数组
         *  byte[] getBytes()
         *  把字符串转换成为字节数组
         */
        byte[] bytes2 = "你好".getBytes();
        System.out.println(Arrays.toString(bytes2));//[-28, -67, -96, -27, -91, -67]
        fos.write(bytes2);

        //释放资源
        fos.close();

    }
}
